当前位置:  开发笔记 > 编程语言 > 正文

"?:^"正则表达式是什么意思?

如何解决《"?:^"正则表达式是什么意思?》经验,为你挑选了2个好方法。

我正在看这个子表达式(这是在JavaScript中):

(?:^|.....)

我知道吗?当它跟随一个角色时意味着"零次或一次",但不确定它在这种情况下意味着什么.



1> Tomalak..:

使用组时,通常有几个选项可以修改组的行为:

(foo)     // default behavior, matches "foo" and stores a back-reference
(?:foo)   // non-capturing group: matches "foo", but doesn't store a back-ref
(?i:foo)  // matches "foo" case-insensitively
(?=foo)   // matches "foo", but does not advance the current position
          // ("positive zero-width look-ahead assertion")
(?!foo)   // matches anything but "foo", and does not advance the position 
          // ("negative zero-width look-ahead assertion")

仅举几例.

它们都以"?"开头,这是表示组修饰符的方式.在这种情况下,问号与可选性无关.

它简单地说:

(?:^foo)  // match "foo" at the start of the line, but do not store a back-ref

有时候,对于你不会使用的比赛的某些部分,存储一个反向引用是有点过分的.当组只存在一个复杂的表达式原子(例如它应该匹配或作为一个整体失败)时,存储反向引用是不必要的资源浪费,甚至可以减慢正则表达式.有时候,你只想成为第一组与你相关第一组,而不是正则表达式中的第一组.



2> Daniel LeChe..:

你可能在这种情况下看到了它

(?:...)

这意味着该组不会被捕获或用于反向引用.

编辑:反映您修改后的问题:

(?:^|....)

表示"匹配行的开头或匹配..."但不捕获该组或将其用于反向引用.

推荐阅读
小白也坚强_177
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有